﻿Public Class xtf_ABMcaja

    Dim ulg_row As DataRow
    Dim obj_Caja As cls_caja_ = Nothing
    Dim dtt_cajaasiento_ As DataTable

    Public modo As cls_caja_.enu_tipo

    Public Sub New(xtf_modo As cls_caja_.enu_tipo)

        InitializeComponent()
        modo = xtf_modo

        Cargartipoimporte_()
        Cargarcajaconcepto_(modo)

        'Prepara grid y datasource proveedorconcepto----------------------------------------------------
        gdv_cajaasiento_.Tag = New Collections.Generic.List(Of cls_cajaasiento_)
        dtt_cajaasiento_ = New DataTable
        dtt_cajaasiento_.Columns.Add("Concepto", GetType(String))
        dtt_cajaasiento_.Columns.Add("Detalle", GetType(String))
        dtt_cajaasiento_.Columns.Add("Tipo de Importe", GetType(String))
        dtt_cajaasiento_.Columns.Add("Importe", GetType(Decimal))
        dtt_cajaasiento_.Columns.Add("observaciones", GetType(String))
        dtt_cajaasiento_.Columns.Add("Objeto", GetType(Object))

        gdc_cajaasiento_.DataSource = dtt_cajaasiento_
        gdc_cajaasiento_.ForceInitialize()
        gdv_cajaasiento_.PopulateColumns()
        gdv_cajaasiento_.Columns("Objeto").Visible = False
        gdv_cajaasiento_.Columns("observaciones").Visible = False
        'gdv_cajaasiento_.Columns("Tipo de Importe").Visible = True

        'gdv_cajaasiento_.Columns("Concepto").Width = NoVal_concepto.Width
        'gdv_cajaasiento_.Columns("Detalle").Width = NoVal_Tercero.Width + 3
        'gdv_cajaasiento_.Columns("Importe").Width = NoVal_Importe.Width + 3 + LayoutControlItem8.Width + 3 ' NoVal_TipoImporte.Width + 3

        'gdv_cajaasiento_.Columns("observaciones").Width = NoVal_Observaciones.Width + 3 + LayoutControlItem8.Width

        FiltrarColumnas()

        AgregarValidaciones()



    End Sub

    Private Sub Cargartipoimporte_()
        Dim tmp_obj As Integer = 0
        tmp_obj = cbo_tipoimporte.EditValue

        cargarCombo(cbo_tipoimporte, GetType(cls_cajaasiento_.enu_tipoimporte))
        cbo_tipoimporte.EditValue = IIf(tmp_obj <> 0, tmp_obj, cbo_tipoimporte.EditValue)
    End Sub

    Private Sub Cargartercero_(ByVal prm_int_tipo As cls_tercero_.enu_tipotercero)
        Dim tercero As Object
        Select Case prm_int_tipo
            Case cls_tercero_.enu_tipotercero.Cliente
                cbo_tercero.Enabled = True
                tercero = New cls_cliente_
                tercero.cargartodos(True)
                cargarCombo(cbo_tercero, tercero.Items)
            Case cls_tercero_.enu_tipotercero.Proveedor
                cbo_tercero.Enabled = True
                tercero = New cls_proveedor_
                tercero.cargartodos(True)
                cargarCombo(cbo_tercero, tercero.Items)
            Case cls_tercero_.enu_tipotercero.Personal
                cbo_tercero.Enabled = True
                tercero = New cls_personal_
                tercero.cargartodos()
                cargarCombo(cbo_tercero, tercero.Items)
            Case cls_tercero_.enu_tipotercero.Nulo
                cbo_tercero.Enabled = False
                cbo_tercero.Properties.DataSource = Nothing
        End Select
    End Sub

    Private Sub Cargarcajaconcepto_(ByVal prm_modo As cls_caja_.enu_tipo)
        Dim tmp_obj As Integer = 0
        tmp_obj = cbo_cajaconcepto.EditValue

        Dim cajaconcepto_ As New cls_cajaconcepto_
        cajaconcepto_.CargarXtipocaja(prm_modo)
        cargarCombo(cbo_cajaconcepto, cajaconcepto_.Items)
        cbo_cajaconcepto.EditValue = IIf(tmp_obj <> 0, tmp_obj, cbo_cajaconcepto.EditValue)
    End Sub

    Public Overrides Sub ControlarModificaciones(ByRef coleccion As Object)
        For Each Group As Object In coleccion
            Select Case Group.GetType.ToString
                Case GetType(DevExpress.XtraLayout.LayoutControlGroup).ToString
                    For Each Item As Object In CType(Group, DevExpress.XtraLayout.LayoutControlGroup).Items
                        Select Case Item.GetType.ToString
                            Case GetType(DevExpress.XtraLayout.LayoutControlItem).ToString
                                Select Case CType(Item, DevExpress.XtraLayout.LayoutControlItem).Control.Name
                                    Case "cbo_cajaconcepto", "txt_importe", "txt_observaciones", "cbo_tercero", "cbo_tipoimporte"
                                    Case Else
                                        ControlarModificacion(CType(Item, DevExpress.XtraLayout.LayoutControlItem).Control)
                                End Select
                        End Select
                    Next
            End Select
        Next
    End Sub

    Public Shadows Sub Nuevo(ByRef listado As Form)
        Try
            frm_listado = listado

            Me.Text = CType(frm_listado, xtf_ListadoBase).lbl_modulo.Text & " - Nuevo"

            obj_Caja = New cls_caja_
            obj_Caja.tipo = modo
            btn_Registro.Enabled = False
            dtp_fecha.DateTime = Now.Date
            Me.Show()
        Catch ex As Exception
            'Dim frmError As New frm_ErrorManager(ex.Message)
        End Try
    End Sub

    Public Shadows Sub Modificar(ByRef Caja As cls_caja_, ByRef listado As Form, ByRef row As DataRow)
        If IsNothing(obj_Caja) Then
            obj_Caja = New cls_caja_
        End If
        obj_Caja = Caja
        frm_listado = listado
        ulg_row = row : bbi_imprimir.Enabled = True

        Me.Text = CType(frm_listado, xtf_ListadoBase).lbl_modulo.Text & " - " & obj_Caja.ToString

        txt_ID.Text = obj_Caja.idcaja
        txt_Saldo.Text = obj_Caja.saldo
        dtp_fecha.DateTime = obj_Caja.fecha

        dtt_cajaasiento_.Clear()
        gdv_cajaasiento_.Tag.Clear()
        If Not IsNothing(obj_Caja.cajaasiento_) Then
            If Not IsNothing(obj_Caja.cajaasiento_.Items) Then
                For Each cajaasiento As cls_cajaasiento_ In obj_Caja.cajaasiento_.Items
                    Dim Item As DataRow = dtt_cajaasiento_.NewRow

                    If Not IsNothing(cajaasiento.cajaconcepto) Then
                        Select Case cajaasiento.cajaconcepto.tipo
                            Case cls_cajaconcepto_.enu_tipo.Cliente
                                Dim cliente As New cls_cliente_
                                If cliente.BuscarXidtercero(cajaasiento.idtercero) Then
                                    cajaasiento.idtercero = cliente.idtercero
                                    Item("Detalle") = cliente.ToString & IIf(cajaasiento.observaciones = "", "", " (Nro. Documento: " & cajaasiento.observaciones & ")")
                                End If
                            Case cls_cajaconcepto_.enu_tipo.Personal
                                Dim personal As New cls_personal_
                                If personal.BuscarXidtercero(cajaasiento.idtercero) Then
                                    cajaasiento.idtercero = personal.idtercero
                                    Item("Detalle") = personal.ToString & IIf(cajaasiento.observaciones = "", "", " (Nro. Documento: " & cajaasiento.observaciones & ")")
                                End If
                            Case cls_cajaconcepto_.enu_tipo.Proveedor
                                Dim proveedor As New cls_proveedor_
                                If proveedor.BuscarXidtercero(cajaasiento.idtercero) Then
                                    cajaasiento.idtercero = proveedor.idtercero
                                    Item("Detalle") = proveedor.ToString & IIf(cajaasiento.observaciones = "", "", " (Nro. Documento: " & cajaasiento.observaciones & ")")
                                End If
                            Case Else
                                Item("Detalle") = cajaasiento.observaciones
                        End Select

                        Item("Concepto") = cajaasiento.cajaconcepto.ToString
                    End If

                    Item("Tipo de Importe") = EnumDescription(cajaasiento.tipoimporte)
                    Select Case cajaasiento.tipoimporte
                        Case cls_cajaasiento_.enu_tipoimporte.Ingreso
                            Item("Importe") = cajaasiento.importe
                        Case cls_cajaasiento_.enu_tipoimporte.Salida
                            Item("Importe") = cajaasiento.importe * -1
                    End Select
                    Item("observaciones") = ""
                    Item("Objeto") = cajaasiento

                    dtt_cajaasiento_.Rows.Add(Item)

                Next
            End If
        End If

        calcularTotal()
        btn_Registro.Enabled = True

        Me.Show()

    End Sub

    Public Overrides Function ComprobarDatos() As Boolean

        Dim caja As New cls_caja_
        If caja.BuscarXfechaXtipo(dtp_fecha.DateTime.Date, obj_Caja.tipo) Then
            If txt_ID.Text <> "" Then
                If caja.idcaja <> txt_ID.Text Then
                    ErrManagerShow("005001", Me)
                    Return False
                End If
            Else
                ErrManagerShow("005001", Me)
                Return False
            End If
        End If

        If Not ControlarValidaciones() Then
            ErrManagerShow("000004", Me)
            Return False
        End If
        Return True
    End Function

    Public Shadows Sub btn_Guardar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_Guardar.Click
        If ComprobarDatos() Then
            obj_Caja.saldo = txt_Saldo.Text
            obj_Caja.fecha = dtp_fecha.DateTime.Date
            'Guardo cajaasiento------------------------------------------------------
            If IsNothing(obj_Caja.cajaasiento_) Then
                obj_Caja.cajaasiento_ = New cls_cajaasiento_
            End If
            If IsNothing(obj_Caja.cajaasiento_.Items) Then
                obj_Caja.cajaasiento_.Items = New Collections.Generic.List(Of cls_cajaasiento_)
            End If
            obj_Caja.cajaasiento_.Items = New Collections.Generic.List(Of cls_cajaasiento_)
            For Each Elemento As DataRow In dtt_cajaasiento_.Rows
                CType(Elemento("Objeto"), cls_cajaasiento_).fecha = obj_Caja.fecha
                obj_Caja.cajaasiento_.Items.Add(Elemento("Objeto"))
            Next
            For Each Elemento As cls_cajaasiento_ In gdv_cajaasiento_.Tag
                If Elemento.idcajaasiento <> 0 Then
                    Elemento.Eliminar(Elemento.idcajaasiento)
                End If
            Next

            If txt_ID.Text = "" Then
                obj_Caja.Nuevo(True)
                If frm_listado.Visible Then
                    ulg_row = CType(frm_listado, xtf_LISTADOcaja_).AgregarItem(obj_Caja)
                End If
                Modificar(obj_Caja, frm_listado, ulg_row)
            Else
                obj_Caja.Modificar()
                If frm_listado.Visible Then
                    CType(frm_listado, xtf_LISTADOcaja_).ModificarItem(obj_Caja, ulg_row)
                End If
                Modificar(obj_Caja, frm_listado, ulg_row)
            End If
            flg_Modificado = False : btn_Guardar.Enabled = False : bbi_guardar.Enabled = False
        End If
    End Sub

    Private Sub btn_Registro_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_Registro.Click
        If Not IsNothing(obj_Caja.registro) Then
            Dim ABMRegistro As New xtf_ABMRegistro(obj_Caja.registro)
            If ABMRegistro.ShowDialog() = Windows.Forms.DialogResult.OK Then
                flg_Modificado = True
            End If
        End If
    End Sub


    Private Sub btn_Cerrar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_Cerrar.Click
        guardar_config_usuariocolumna_()
        If flg_Modificado Then
            bol_comprobarCerrado = False
            Select Case ErrManagerShow("000001", Me)
                Case Windows.Forms.DialogResult.Yes
                    If ComprobarDatos() Then
                        btn_Guardar_Click(Nothing, Nothing)
                    Else
                        Exit Sub
                    End If
                Case Windows.Forms.DialogResult.Cancel : bol_comprobarCerrado = True
                    Exit Sub
            End Select
        End If
        Me.Dispose()
    End Sub

    Private Sub cbo_cajaconcepto_EditValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cbo_cajaconcepto.EditValueChanged
        Dim cajaconcepto As New cls_cajaconcepto_
        cajaconcepto.Buscar(cbo_cajaconcepto.EditValue)
        lac_general.BeginUpdate()
        Select Case cajaconcepto.tipo
            Case cls_cajaconcepto_.enu_tipo.Cliente
                Cargartercero_(cls_tercero_.enu_tipotercero.Cliente)
                NoVal_Tercero.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Always
                NoVal_Documento.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Always
                NoVal_Observaciones.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never
                NoVal_Observaciones.Width = 500
            Case cls_cajaconcepto_.enu_tipo.Personal
                Cargartercero_(cls_tercero_.enu_tipotercero.Personal)
                NoVal_Tercero.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Always
                NoVal_Documento.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Always
                NoVal_Observaciones.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never
                NoVal_Observaciones.Width = 500
            Case cls_cajaconcepto_.enu_tipo.Proveedor
                Cargartercero_(cls_tercero_.enu_tipotercero.Proveedor)
                NoVal_Tercero.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Always
                NoVal_Documento.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Always
                NoVal_Observaciones.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never
                NoVal_Observaciones.Width = 500
            Case cls_cajaconcepto_.enu_tipo.Ninguno
                Cargartercero_(cls_tercero_.enu_tipotercero.Nulo)
                NoVal_Tercero.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never
                NoVal_Documento.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never
                NoVal_Observaciones.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Always
                NoVal_Observaciones.Width = 500
        End Select
        cbo_tipoimporte.EditValue = cajaconcepto.tipoimporte
        lac_general.EndUpdate()
    End Sub

    Private Sub tsb_cajaasientoAgregar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tsb_cajaasientoAgregar.Click
        If txt_importe.Text <> 0 Then
            Dim cajaasiento As New cls_cajaasiento_
            Dim Item As DataRow = dtt_cajaasiento_.NewRow

            cajaasiento.idcajaconcepto = cbo_cajaconcepto.EditValue
            Select Case cajaasiento.cajaconcepto.tipo
                Case cls_cajaconcepto_.enu_tipo.Cliente
                    Dim cliente As New cls_cliente_
                    cliente.Buscar(cbo_tercero.EditValue)
                    cajaasiento.idtercero = cliente.idtercero
                    Item("Detalle") = cliente.ToString & IIf(txt_observaciones2.Text = "", "", " (Nro. Documento: " & txt_observaciones2.Text & ")")
                    cajaasiento.observaciones = txt_observaciones2.Text
                Case cls_cajaconcepto_.enu_tipo.Personal
                    Dim personal As New cls_personal_
                    personal.Buscar(cbo_tercero.EditValue)
                    cajaasiento.idtercero = personal.idtercero
                    Item("Detalle") = personal.ToString & IIf(txt_observaciones2.Text = "", "", " (Nro. Documento: " & txt_observaciones2.Text & ")")
                    cajaasiento.observaciones = txt_observaciones2.Text
                Case cls_cajaconcepto_.enu_tipo.Proveedor
                    Dim proveedor As New cls_proveedor_
                    proveedor.Buscar(cbo_tercero.EditValue)
                    cajaasiento.idtercero = proveedor.idtercero
                    Item("Detalle") = proveedor.ToString & IIf(txt_observaciones2.Text = "", "", " (Nro. Documento: " & txt_observaciones2.Text & ")")
                    cajaasiento.observaciones = txt_observaciones2.Text
                Case Else
                    Item("Detalle") = txt_observaciones.Text
                    cajaasiento.observaciones = txt_observaciones.Text
            End Select
            cajaasiento.importe = txt_importe.Text
            cajaasiento.tipoimporte = cbo_tipoimporte.EditValue
            cajaasiento.tipo = cls_cajaasiento_.enu_tipo.Manual

            Item("Concepto") = cajaasiento.cajaconcepto.ToString
            Item("Tipo de Importe") = cbo_tipoimporte.Text
            Select Case cajaasiento.tipoimporte
                Case cls_cajaasiento_.enu_tipoimporte.Ingreso
                    Item("Importe") = cajaasiento.importe
                Case cls_cajaasiento_.enu_tipoimporte.Salida
                    Item("Importe") = cajaasiento.importe * -1
            End Select
            Item("observaciones") = ""
            Item("Objeto") = cajaasiento

            dtt_cajaasiento_.Rows.Add(Item)


            txt_importe.Text = 0
            If Not IsNothing(cbo_cajaconcepto.Properties.DataSource) Then
                cbo_cajaconcepto.EditValue = cbo_cajaconcepto.Properties.DataSource(0).pkey
            End If
            txt_observaciones.Text = ""
            cbo_cajaconcepto.Focus()

            calcularTotal()
            'cajaasiento.tipoimporte = cbo_tipoimporte.EditValue
        End If

    End Sub

    Private Sub calcularTotal()
        Dim total As Decimal = txt_Saldo.Text
        For Each row As DataRow In dtt_cajaasiento_.Rows
            total += row("Importe")
        Next
        txt_total.Text = total
    End Sub

    Private Sub txt_Saldo_EditValueChanged(sender As System.Object, e As System.EventArgs) Handles txt_Saldo.EditValueChanged
        calcularTotal()
    End Sub

    Private Sub tsb_cajaasientoEliminar_Click(sender As System.Object, e As System.EventArgs) Handles tsb_cajaasientoEliminar.Click
        If gdv_cajaasiento_.SelectedRowsCount > 0 Then
            gdv_cajaasiento_.BeginDataUpdate()
            gdv_cajaasiento_.Tag.add(gdv_cajaasiento_.GetDataRow(gdv_cajaasiento_.GetSelectedRows(0))("Objeto"))
            dtt_cajaasiento_.Rows.Remove(gdv_cajaasiento_.GetDataRow(gdv_cajaasiento_.GetSelectedRows(0)))
            gdv_cajaasiento_.EndDataUpdate()
            calcularTotal()
        End If
    End Sub

    Private Sub dtp_fecha_EditValueChanged(sender As System.Object, e As System.EventArgs) Handles dtp_fecha.EditValueChanged
        txt_dia.Text = UCase(Format(dtp_fecha.DateTime, "dddd"))
    End Sub

    Private Sub dtp_fecha_EditValueChanging(sender As Object, e As DevExpress.XtraEditors.Controls.ChangingEventArgs) Handles dtp_fecha.EditValueChanging

    End Sub

    Private Sub cbo_cajaconcepto_KeyPress(sender As Object, e As System.Windows.Forms.KeyPressEventArgs) Handles cbo_cajaconcepto.KeyPress
        If e.KeyChar = Chr(13) Then
            If NoVal_Tercero.Visible Then
                cbo_tercero.Focus()
            Else
                txt_observaciones.Focus()
            End If
        End If
    End Sub

    Private Sub txt_observaciones_EditValueChanged(sender As System.Object, e As System.EventArgs) Handles txt_observaciones.EditValueChanged

    End Sub

    Private Sub txt_observaciones_KeyPress(sender As Object, e As System.Windows.Forms.KeyPressEventArgs) Handles txt_observaciones.KeyPress
        If e.KeyChar = Chr(13) Then
            txt_importe.Focus()
        End If
    End Sub

    Private Sub cbo_tercero_EditValueChanged(sender As System.Object, e As System.EventArgs) Handles cbo_tercero.EditValueChanged

    End Sub

    Private Sub cbo_tercero_KeyPress(sender As Object, e As System.Windows.Forms.KeyPressEventArgs) Handles cbo_tercero.KeyPress
        If e.KeyChar = Chr(13) Then
            txt_importe.Focus()
        End If
    End Sub

    Private Sub cbo_tipoimporte_EditValueChanged(sender As System.Object, e As System.EventArgs) Handles cbo_tipoimporte.EditValueChanged

    End Sub
    Private Sub txt_observaciones2_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txt_observaciones2.KeyPress
        If e.KeyChar = Chr(13) Then
            txt_importe.Focus()
        End If
    End Sub
    Private Sub cbo_tipoimporte_KeyPress(sender As Object, e As System.Windows.Forms.KeyPressEventArgs) Handles cbo_tipoimporte.KeyPress
        If e.KeyChar = Chr(13) Then
            txt_importe.Focus()
        End If
    End Sub

    Private Sub txt_importe_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txt_importe.KeyPress
        If e.KeyChar = Chr(13) Then
            If txt_importe.Text <> 0 Then
                tsb_cajaasientoAgregar.Focus()
            Else
                txt_importe.SelectAll()
            End If
        End If
    End Sub

    Private Sub tsb_cajaasientoModificar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tsb_cajaasientoModificar.Click
        If gdv_cajaasiento_.SelectedRowsCount > 0 Then
            gdv_cajaasiento_.BeginDataUpdate()
            Dim cajaasiento As cls_cajaasiento_ = gdv_cajaasiento_.GetDataRow(gdv_cajaasiento_.GetSelectedRows(0))("Objeto")
            cbo_cajaconcepto.EditValue = cajaasiento.idcajaconcepto
            Select Case cajaasiento.cajaconcepto.tipo
                Case cls_cajaconcepto_.enu_tipo.Cliente
                    Dim cliente As New cls_cliente_
                    cliente.BuscarXidtercero(cajaasiento.idtercero)
                    cbo_tercero.EditValue = cliente.idcliente
                Case cls_cajaconcepto_.enu_tipo.Personal
                    Dim personal As New cls_personal_
                    personal.BuscarXidtercero(cajaasiento.idtercero)
                    cbo_tercero.EditValue = personal.idpersonal
                Case cls_cajaconcepto_.enu_tipo.Proveedor
                    Dim proveedor As New cls_proveedor_
                    proveedor.BuscarXidtercero(cajaasiento.idtercero)
                    cbo_tercero.EditValue = proveedor.idproveedor
                Case Else

            End Select

            txt_observaciones.Text = cajaasiento.observaciones
            cbo_tipoimporte.EditValue = CInt(cajaasiento.tipoimporte)
            txt_importe.Text = cajaasiento.importe

            cbo_cajaconcepto.Enabled = True
            cbo_tercero.Enabled = True
            txt_observaciones.Enabled = True
            cbo_tipoimporte.Enabled = True
            txt_importe.Enabled = True


            gdv_cajaasiento_.Tag.add(gdv_cajaasiento_.GetDataRow(gdv_cajaasiento_.GetSelectedRows(0))("Objeto"))
            dtt_cajaasiento_.Rows.Remove(gdv_cajaasiento_.GetDataRow(gdv_cajaasiento_.GetSelectedRows(0)))
            gdv_cajaasiento_.EndDataUpdate()
            calcularTotal()

            txt_importe.SelectAll()
            txt_importe.Focus()
        End If
    End Sub



    Private Sub guardar_config_usuariocolumna_()
        Dim obj_config_usuariocolumna_ As New cls_config_usuariocolumna_
        If obj_config_usuariocolumna_.Buscarxidusuarioxmodulo(UsuarioLOG.idusuario, Me.Name) Then
            obj_config_usuariocolumna_.xml = GetLayoutData(gdv_cajaasiento_)
            obj_config_usuariocolumna_.Modificar()
        Else
            obj_config_usuariocolumna_.xml = GetLayoutData(gdv_cajaasiento_)
            obj_config_usuariocolumna_.idusuario = UsuarioLOG.idusuario
            obj_config_usuariocolumna_.modulo = Me.Name
            obj_config_usuariocolumna_.Nuevo()
        End If
    End Sub

    Public Sub FiltrarColumnas()
        Dim int_IDUsuario As Integer = UsuarioLOG.idusuario
        Dim obj_config_usuariocolumna_ As New cls_config_usuariocolumna_
        gdv_cajaasiento_.BeginUpdate()
        If obj_config_usuariocolumna_.Buscarxidusuarioxmodulo(int_IDUsuario, Me.Name) Then
            SetLayoutData(gdv_cajaasiento_, obj_config_usuariocolumna_.xml)
        End If

        PerzonalizarControl(gdc_cajaasiento_)
        gdv_cajaasiento_.OptionsFilter.AllowFilterEditor = False
        gdv_cajaasiento_.OptionsView.ShowFilterPanelMode = DevExpress.XtraGrid.Views.Base.ShowFilterPanelMode.Never

        gdv_cajaasiento_.EndUpdate()
    End Sub

    Private Function GetLayoutData(ByRef prm_GridView As DevExpress.XtraGrid.Views.Grid.GridView) As Byte()
        Dim stream As New System.IO.MemoryStream()
        prm_GridView.SaveLayoutToStream(stream)

        Return stream.GetBuffer()
    End Function

    Private Sub SetLayoutData(ByRef prm_GridView As DevExpress.XtraGrid.Views.Grid.GridView, ByVal data As Byte())
        If data Is Nothing OrElse data.Length = 0 Then
            Return
        End If
        Dim stream As New System.IO.MemoryStream(data)
        Try
            prm_GridView.RestoreLayoutFromStream(stream)
        Catch ex As Exception
            Throw New Exception("Wrong data format", ex)
        End Try
    End Sub

End Class